using B.S.Domain.审计字段;

namespace B.S.Infratrctrue
{
    public interface IBaseRepository<T>
    {
        /// <summary>
        /// 查询的方法
        /// </summary>
        /// <returns>返回的是一个列表</returns>
          IQueryable<T> GetAll();
        //Task<int> BathDele(List<int> Dele, int id);

        Task<T> GetById(int id); 
        /// <summary>
        /// 根据条件异步查询列表
        /// </summary>
        /// <param name="predicate">查询条件</param>
        /// <param name="cancellationToken">取消令牌</param>
        /// <returns>符合条件的实体列表</returns>
        Task<List<T>> GetListAsync(Func<T, bool> predicate, CancellationToken cancellationToken);
        /// <summary>
        /// 异步添加的方法
        /// </summary>
        /// <param name="entity">泛型参数</param>
        /// <returns>返回的是受影响行数</returns>
        Task<int> Add(T entity);
        /// <summary>
        /// 修改的方法
        /// </summary>
        /// <param name="entity">泛型参数</param>
        /// <returns>返回受影响行数</returns>
        Task<int> Update(T entity);
        /// <summary>
        /// 批量添加的仓储接口
        /// </summary>
        /// <param name="values">泛型参数，传进来是一个列表</param>
        /// <returns>返回受影响行数</returns>
        Task<int> AddRange (List<T> values);
       /// <summary>
       /// 批量修改的方法
       /// </summary>
       /// <param name="values">泛型参数</param>
       /// <returns>返回受影响行数</returns>
        Task<int> UpdateRange (List<T> values);
        //Task<int> BathDele(List<T> Deles);
        SysDbcontext db { get; }

    }
}
